using UnityEngine;

//这段脚本是一个交互组件，用于处理玩家与场景中的可交互物体的交互。
public class Interactor : MonoBehaviour
{
    public Transform InteractionPoint; // 交互点的 transform 组件
    public LayerMask InteractionLayer; // 可交互层
    public float InteractionPointRadius = 1f; // 交互点半径

    public bool IsInteracting { get; private set; } // 是否正在进行交互

    private void Update()
    {
        // 在交互点附近检测可交互对象
        var colliders = Physics2D.OverlapCircle(InteractionPoint.position, InteractionPointRadius, InteractionLayer);
        // 如果按下 E 键，且检测到可交互对象，则开始交互
        if (Input.GetKeyDown(KeyCode.E))
        {
            if (colliders != null)
            {
                var interactable = colliders.GetComponent<IInteractable>();
                if (interactable != null)
                {
                    StartInteraction(interactable);
                }
            }
        }
    }

    //场景窗口可视化交互范围
    private void OnDrawGizmos()
    {
        Gizmos.DrawWireSphere(InteractionPoint.position, InteractionPointRadius);
        Gizmos.color = Color.red;
    }

    // 开始交互
    void StartInteraction(IInteractable interactable)
    {
        interactable.Interact(this, out bool interactSuccessful); // 调用可交互对象的 Interact 方法
        IsInteracting = true; // 设置正在交互的状态为 true
    }

    // 结束交互
    public void EndInteraction()
    {
        IsInteracting = false; // 设置正在交互的状态为 false
    }
}